package org.jet.emall.prod.service;

import org.jet.emall.prod.dto.CategoryDTO;
import org.jet.emall.prod.dto.ProdAttrDTO;
import org.jet.emall.prod.dto.ProdSpecDTO;

import java.util.List;

/**
 * @author xiaozai
 * @version 1.0
 * @date 2020-04-15 16:24
 */
public interface CustomProductCategoryService {
    /**
     *  获取商品分类
     * @return
     */
    List<CategoryDTO> getProductCategories();

    /**
     *  获取可显示的分类数据
     * @return
     */
    List<CategoryDTO> getProductCategoriesOnlyShow();


    /**
     *  获取分类的属性列表
     * @param cate3Id
     * @return
     */
    List<ProdAttrDTO> findAttrsOfCate3(Integer cate3Id);

    /**
     *  获取分类的规格列表
     * @param cate3Id
     * @return
     */
    List<ProdSpecDTO> findSpecsOfCate3(Integer cate3Id);

    /**
     *  删除一个规格
     * @param specId
     */
    void deleteSpec(Integer specId);

    /**
     *  删除一个属性
     * @param attrId
     */
    void deleteAttr(Integer attrId);

    /**
     *  给分类添加属性
     * @param cate3Id
     * @param attrName
     */
    void addAttrForCate3(Integer cate3Id, String attrName);

    /**
     *  给分类添加规格
     * @param cate3Id
     * @param specName
     */
    void addSpecForCate3(Integer cate3Id, String specName);

    /**
     *  更新属性名称
     * @param attrId
     * @param name
     */
    void updateAttr(Integer attrId, String name);

    /**
     *  更新规格名称
     * @param specId
     * @param name
     */
    void updateSpec(Integer specId, String name);

    /**
     *  更新分类名称
     * @param cateId
     * @param name
     */
    void updateCateName(Integer cateId, String name);

    /**
     *  更新分类显示状态
     * @param cateId
     * @param show
     */
    void updateCateShow(Integer cateId, Byte show);

    /**
     *  更新分类备注
     * @param cateId
     * @param remarks
     */
    void updateCateRemarks(Integer cateId, String remarks);


    /**
     *  保存新分类
      * @param cateDTO
     */
    void saveCate(CategoryDTO cateDTO);

    /**
     *  删除分类
     * @param cateId
     */
    void deleteCate(Integer cateId);
}
